package com.ruoyi.yl.costSetting.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import io.swagger.annotations.*;

/**
 * 收费项目对象 yl_charge_item
 *
 * @author Ming
 * @date 2025-10-21
 */
@Data
@Accessors(chain = true)
@ToString(callSuper = true)
@ApiModel(value = "YlChargeItem", description = "用户实体")
public class YlChargeItem extends BaseEntity {

    /**
     * 收费项目名称
     */
    @Excel(name = "收费项目名称")
    @ApiModelProperty("收费项目名称")
    private String itemName;

    /**
     * 收费项目类型主键
     */
    @Excel(name = "收费项目类型主键")
    @ApiModelProperty("收费项目类型主键")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long chargeCategoryId;

    /**
     * 月收费标准/元
     */
    @Excel(name = "月收费标准/元")
    @ApiModelProperty("月收费标准/元")
    private BigDecimal monthlyRate;

    /**
     * 日收费标准/元
     */
    @Excel(name = "日收费标准/元")
    @ApiModelProperty("日收费标准/元")
    private BigDecimal dailyRate;

    /**
     * 周期（月份、日期）
     */
    @Excel(name = "周期", readConverterExp = "月=份、日期")
    @ApiModelProperty("周期（月份、日期）")
    private String chargeCycle;

    /**
     * 月份（1-12月,多选）
     */
    @Excel(name = "月份", readConverterExp = "1=-12月,多选")
    @ApiModelProperty("月份（1-12月,多选）")
    private String chargeMonths;

    /**
     * 开始日期（几月几日）
     */
    @Excel(name = "开始日期", readConverterExp = "几=月几日")
    @ApiModelProperty("开始日期（几月几日）")
    private Date startDate;

    /**
     * 结束日期（几月几日）
     */
    @Excel(name = "结束日期", readConverterExp = "几=月几日")
    @ApiModelProperty("结束日期（几月几日）")
    private Date endDate;

    /**
     * 价格
     */
    @Excel(name = "价格")
    @ApiModelProperty("价格")
    private BigDecimal chargePrice;

    /**
     * 单位（天,月）
     */
    @Excel(name = "单位", readConverterExp = "天=,月")
    @ApiModelProperty("单位（天,月）")
    private String chargeUnit;

    /**
     * 请假收费方式（正常收费、退费）
     */
    @Excel(name = "请假收费方式", readConverterExp = "正=常收费、退费")
    @ApiModelProperty("请假收费方式（正常收费、退费）")
    private String leaveChargeMethod;

    /**
     * 请假外出当天是否收费(收费、退费)
     */
    @Excel(name = "请假外出当天是否收费(收费、退费)")
    @ApiModelProperty("请假外出当天是否收费(收费、退费)")
    private String leaveDayCharge;

    /**
     * 请假回归当天是否收费（收费、退费）
     */
    @Excel(name = "请假回归当天是否收费", readConverterExp = "收=费、退费")
    @ApiModelProperty("请假回归当天是否收费（收费、退费）")
    private String returnDayCharge;

    /**
     * 累计请假小于多少天进行退费
     */
    @Excel(name = "累计请假小于多少天进行退费")
    @ApiModelProperty("累计请假小于多少天进行退费")
    private Long leaveDaysForRefund;

    /**
     * 累计请假小于多少天退几天费用（对应天数、-天）
     */
    @Excel(name = "累计请假小于多少天退几天费用", readConverterExp = "对=应天数、-天")
    @ApiModelProperty("累计请假小于多少天退几天费用（对应天数、-天）")
    private Long refundDaysForLeave;

    /**
     * 累计请假大于等于多少天进行退费
     */
    @Excel(name = "累计请假大于等于多少天进行退费")
    @ApiModelProperty("累计请假大于等于多少天进行退费")
    private Long leaveDaysForRefundGte;

    /**
     * 累计请假大于等于多少天退几天费用（对应天数、-天）
     */
    @Excel(name = "累计请假大于等于多少天退几天费用", readConverterExp = "对=应天数、-天")
    @ApiModelProperty("累计请假大于等于多少天退几天费用（对应天数、-天）")
    private Long refundDaysForLeaveGte;

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 是否删除 1-正常 2-删除
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty("是否删除 1-正常 2-删除")
    private String deleteStatus;

}
